<?php
include_once("../dao/conexao_class.php");
include_once("../model/ocorrencia_model_class.php");
include_once("../model/tipo_ocorrencia_model_class.php");
include_once("../model/urgencia_model_class.php");
include_once("../model/especialidade_model_class.php");
include_once("../model/campus_model_class.php");
include_once("../controller/predio_controller_class.php");
include_once("../controller/sala_controller_class.php");
include_once("../model/logradouro_model_class.php");
include_once("../model/funcionario_model_class.php");
include_once("../model/andamento_model_class.php");
include_once("../controller/funcionario_controller_class.php");
include_once("../controller/funcionario_controller_class.php");
include_once("../controller/andamento_controller_class.php");
include_once("../model/equipe_model_class.php");
include_once("../dao/andamento_dao_class.php");

class OcorrenciaDAO{
    
    private $insert = "INSERT INTO ocorrencia(esp_id,tip_oco_id,oco_data_hora,oco_dt_hr_solucao,oco_foto,oco_comentario,
            cam_id,pre_id,sal_id, and_id, fun_id,urg_id) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)";
    private $update = "";
    private $delete = "DELETE FROM ocorrencia WHERE oco_id = ?";
    private $select = "select * from ocorrencia, tipo_ocorrencia, urgencia, especialidade, 
                campus, logradouro, andamento 
		where                                    
		ocorrencia.TIP_OCO_ID = tipo_ocorrencia.TIP_OCO_ID
		AND tipo_ocorrencia.URG_ID = urgencia.URG_ID
		AND tipo_ocorrencia.ESP_ID = especialidade.ESP_ID
		AND ocorrencia.CAM_ID = campus.CAM_ID
		AND logradouro.LOG_ID = campus.LOG_ID
		AND andamento.AND_ID = ocorrencia.AND_ID;";
    private $select_by_urgencia_and_andamento = "select * from ocorrencia, tipo_ocorrencia, urgencia, especialidade, 
                campus, logradouro, andamento 
		where                                    
		ocorrencia.TIP_OCO_ID = tipo_ocorrencia.TIP_OCO_ID
		AND tipo_ocorrencia.URG_ID = urgencia.URG_ID
		AND tipo_ocorrencia.ESP_ID = especialidade.ESP_ID
		AND ocorrencia.CAM_ID = campus.CAM_ID
		AND logradouro.LOG_ID = campus.LOG_ID
		AND andamento.AND_ID = ocorrencia.AND_ID
		AND ocorrencia.URG_ID = ?
		AND andamento.AND_ID = ? ORDER BY ocorrencia.OCO_ID AND ocorrencia.URG_ID;";
    private $select_by_urgencia_and_andamento_campus = "select * from ocorrencia, tipo_ocorrencia, urgencia, especialidade, 
                campus, logradouro, andamento 
		where                                    
		ocorrencia.TIP_OCO_ID = tipo_ocorrencia.TIP_OCO_ID
		AND tipo_ocorrencia.URG_ID = urgencia.URG_ID
		AND tipo_ocorrencia.ESP_ID = especialidade.ESP_ID
		AND ocorrencia.CAM_ID = campus.CAM_ID
		AND logradouro.LOG_ID = campus.LOG_ID
		AND andamento.AND_ID = ocorrencia.AND_ID
		AND ocorrencia.URG_ID = ?
		AND andamento.AND_ID = ?
                AND campus.CAM_ID = ? ORDER BY ocorrencia.OCO_ID AND ocorrencia.URG_ID;";
    
    private $select_equipe = "SELECT oco_id, fun_id FROM equipe WHERE oco_id = ?;";
    
    private $select_urgencia_by_funcionario = "select * from funcionario, equipe, ocorrencia where 
        funcionario.FUN_ID = equipe.FUN_ID AND equipe.OCO_ID = ocorrencia.OCO_ID
        AND equipe.EQUIPE_ATIVO != 0 AND ocorrencia.AND_ID = ? AND funcionario.FUN_ID = ? AND ocorrencia.URG_ID = ?; ";
    
    private $select_by_id = "select * from ocorrencia where ocorrencia.OCO_ID = ?; ";
    
    private $andamento = "UPDATE ocorrencia SET and_id = ? WHERE oco_id = ?";
    private $andamento_date = "UPDATE ocorrencia SET oco_dt_inicio = ?, and_id = ? WHERE oco_id = ?";
    private $andamento_date_fim = "UPDATE ocorrencia SET oco_dt_hr_solucao = ?, and_id = ? WHERE oco_id = ?";
    
    private $update_urgencia = "UPDATE ocorrencia SET urg_id = ? WHERE oco_id = ?";
    
    private $qtd_ocorrencia = "select count(oco_id) from ocorrencia where and_id = ?;";
    
    function insert($objOcorrencia){
        $objConn = new Conexao();
        $conn = $objConn->conecta();
        
        if($stm = $conn->prepare($this->insert)){

            $stm->bind_param("iissssiiiiii", $objOcorrencia->getEspecialidade(),$objOcorrencia->getTipoOcorrencia(),
                    $objOcorrencia->getDataHora(),$objOcorrencia->getDataHoraSolucao(),$objOcorrencia->getFoto(),
                    $objOcorrencia->getComentario(), $objOcorrencia->getCampus(),$objOcorrencia->getPredio(),
                    $objOcorrencia->getSala(),$objOcorrencia->getAndamento(), $objOcorrencia->getFuncionario(),
                    $objOcorrencia->getUrgencia());
            
            if($stm->execute()){
                
                $conn->close();
                
                return true;
            }else{
                mysqli_error($conn);
                $conn->close();
                
                return false;
            }
            
        }
        mysqli_error($conn);
        return false;
    }
    
    function update($objOcorrencia){
        
    }
    
    function updateAndamento($id, $andamento){
        $objConn = new Conexao();
        $conn = $objConn->conecta();
        
        if ($stm = $conn->prepare($this->andamento)) {
            
            $stm->bind_param('ii', $andamento,$id);
            
            if ($stm->execute()) {
                $conn->close();
                return true;
            } else {
                $conn->close();
                return false;
            }
            
        }
        return false;
    }
    
    function updateUrgencia($id, $urgencia){
        $objConn = new Conexao();
        $conn = $objConn->conecta();
        
        if ($stm = $conn->prepare($this->update_urgencia)) {
            
            $stm->bind_param('ii', $urgencia,$id);
            
            if ($stm->execute()) {
                $conn->close();
                return true;
            } else {
                $conn->close();
                return false;
            }
            
        }
        return false;
    }
    
    function qtdOcorrencia($andamento){
        $objConn = new Conexao();
        $conn = $objConn->conecta();
        
        if ($stm = $conn->prepare($this->qtd_ocorrencia)) {
            
            $stm->bind_param('i', $andamento);
            
            if ($stm->execute()) {
                
                $stm->bind_result($qtd);
                
                while($stm->fetch()){
                    $conn->close();
                
                    return $qtd;
                }
                
            }
            
        }
        
        return 0;
    }
    
    function updateAndamentoInicio($id, $andamento,$date){
        $objConn = new Conexao();
        $conn = $objConn->conecta();
        
        if ($stm = $conn->prepare($this->andamento_date)) {
            
            $stm->bind_param('sii', $date,$andamento,$id);
            
            if ($stm->execute()) {
                $conn->close();
                return true;
            } else {
                $conn->close();
                return false;
            }
            
        }
        return false;
    }
    
    function updateAndamentoFim($id, $andamento,$date){
        $objConn = new Conexao();
        $conn = $objConn->conecta();
        
        if ($stm = $conn->prepare($this->andamento_date_fim)) {
            
            $stm->bind_param('sii', $date,$andamento,$id);
            
            if ($stm->execute()) {
                $conn->close();
                return true;
            } else {
                $conn->close();
                return false;
            }
            
        }
        return false;
    }
    
    function delete($id){
        $objConn = new Conexao();
        $conn = $objConn->conecta();
        
        if ($stm = $conn->prepare($this->delete)) {
            
            $stm->bind_param('i', $id);
            
            if ($stm->execute()) {
                $conn->close();
                return true;
            } else {
                $conn->close();
                return false;
            }
            
        }
        return false;
    }
    
    function findAllOcorrencias(){
        $objConn = new Conexao();
        $conn = $objConn->conecta();
        $ocoM = new OcorrenciaModel();
        
        $lista = array();
        $i = 0;
        
        if ($stm = $conn->prepare($this->select)) {
            
            $stm->execute();

            //atribui o resultado encontrado as variaveis
            $stm->bind_result($id, $esp_id, $tip_oco_id, $oco_data_hora, $oco_dt_inicio, $oco_dt_hr_solucao, $oco_foto, 
                    $oco_comentario,$cam_id, $pre_id, $sal_id, $and_id, $fun_id, $urg_id, $tip_oco_id1, 
                    $tip_oco_descricao, $urg_id1, $esp_id1, $urg_id2, $urg_nome, $urg_cor, $urg_tempo, $esp_id2, 
                    $esp_nome, $cam_id1, $log_id, $cam_nome, $cam_num, $log_id1, $log_cep, $log_endereco, 
                    $log_bairro, $log_cidade, $log_uf, $and_id1, $and_descricao);

            while ($stm->fetch()) {
                $ocoM = new OcorrenciaModel();
                $tip_ocoM = new TipoOcorrenciaModel();
                $urgM = new UrgenciaModel();
                $espM = new EspecialidadeModel();
                $camM = new CampusModel();
                $objPredio = new PredioController();
                $objSala = new SalaController();
                $andM = new AndamentoModel();
                $logM = new LogradouroModel();
                $objFunc = new FuncionarioController();
                
                
                //especialidade
                $espM->setId($esp_id);
                $espM->setNome($esp_nome);
                
                //tipo de ocorrencia
                //urgencia
                $urgM->setId($urg_id);
                $urgM->setNome($urg_nome);
                $urgM->setCor($urg_cor);
                $urgM->setTempo($urg_tempo);
                
                
                $tip_ocoM->setId($tip_oco_id);
                $tip_ocoM->setUrgencia($urgM);
                $tip_ocoM->setEspecialidade($espM);
                $tip_ocoM->setDescricao($tip_oco_descricao);
                
                //logradouro
                $logM->setId($log_id);
                $logM->setCep($log_cep);
                $logM->setEndereco($log_endereco);
                $logM->setBairro($log_bairro);
                $logM->setCidade($log_cidade);
                $logM->setUf($log_uf);
                
                //campus
                $camM->setId($cam_id);
                $camM->setLogradouro($logM);
                $camM->setNome($cam_nome);
                $camM->setNumero($cam_num);
                
                //predio
                $listPredio = $objPredio->selecionarPredioPorId($pre_id);
                
//                $preM->setId($pre_id);
//                $preM->setCampus($cam_id);
//                $preM->setNome($pre_nome);
                
                //sala
                $listSala = $objSala->selecionarSalaPorId($sal_id);
//                $salM->setId($sal_id);
//                $salM->setPredio($pre_id);
//                $salM->setIdentificacao($sal_identificacao);
//                $salM->setAndar($sal_andar);
                
                //andamento
                $andM->setId($and_id);
                $andM->setDescricao($and_descricao);
                
                //funcionario
                $func = $objFunc->selecionarPorId($fun_id);
                
                //ocorrencia
                $ocoM->setId($id);
                $ocoM->setEspecialidade($espM);
                $ocoM->setTipoOcorrencia($tip_ocoM);
                $ocoM->setDataHora($oco_data_hora);
                $ocoM->setDataInicio($oco_dt_inicio);
                $ocoM->setDataHoraSolucao($oco_dt_hr_solucao);
                $ocoM->setFoto($oco_foto);
                $ocoM->setComentario($oco_comentario);
                $ocoM->setCampus($camM);
                $ocoM->setPredio($listPredio);
                $ocoM->setSala($listSala);
                $ocoM->setAndamento($andM);
                $ocoM->setFuncionario($func);
                
                $lista[$i++] = $ocoM;
                
            }
        }
        $conn->close();
        return $lista;
    }
    function findByUrgenciaAndamento($urgencia,$andamento){
        
        $objConn = new Conexao();
        $conn = $objConn->conecta();
        $ocoM = new OcorrenciaModel();
        
        $lista = array();
        $i = 0;
        
        if ($stm = $conn->prepare($this->select_by_urgencia_and_andamento)) {
            
            $stm->bind_param('ii', $urgencia,$andamento);
            
            $stm->execute();

            //atribui o resultado encontrado as variaveis
            $stm->bind_result($id, $esp_id, $tip_oco_id, $oco_data_hora, $oco_dt_inicio, $oco_dt_hr_solucao, $oco_foto, 
                    $oco_comentario,$cam_id, $pre_id, $sal_id, $and_id, $fun_id, $urg_id, $tip_oco_id1, 
                    $tip_oco_descricao, $urg_id1, $esp_id1, $urg_id2, $urg_nome, $urg_cor, $urg_tempo, $esp_id2, 
                    $esp_nome, $cam_id1, $log_id, $cam_nome, $cam_num, $log_id1, $log_cep, $log_endereco, 
                    $log_bairro, $log_cidade, $log_uf, $and_id1, $and_descricao);

            while ($stm->fetch()) {
                $ocoM = new OcorrenciaModel();
                $tip_ocoM = new TipoOcorrenciaModel();
                $urgM = new UrgenciaModel();
                $espM = new EspecialidadeModel();
                $camM = new CampusModel();
                $objPredio = new PredioController();
                $objSala = new SalaController();
                $andM = new AndamentoModel();
                $logM = new LogradouroModel();
                $objFunc = new FuncionarioController();
                
                
                //especialidade
                $espM->setId($esp_id);
                $espM->setNome($esp_nome);
                
                //tipo de ocorrencia
                //urgencia
                $urgM->setId($urg_id);
                $urgM->setNome($urg_nome);
                $urgM->setCor($urg_cor);
                $urgM->setTempo($urg_tempo);
                
                
                $tip_ocoM->setId($tip_oco_id);
                $tip_ocoM->setUrgencia($urgM);
                $tip_ocoM->setEspecialidade($espM);
                $tip_ocoM->setDescricao($tip_oco_descricao);
                
                //logradouro
                $logM->setId($log_id);
                $logM->setCep($log_cep);
                $logM->setEndereco($log_endereco);
                $logM->setBairro($log_bairro);
                $logM->setCidade($log_cidade);
                $logM->setUf($log_uf);
                
                //campus
                $camM->setId($cam_id);
                $camM->setLogradouro($logM);
                $camM->setNome($cam_nome);
                $camM->setNumero($cam_num);
                
                //predio
                $listPredio = $objPredio->selecionarPredioPorId($pre_id);
                
//                $preM->setId($pre_id);
//                $preM->setCampus($cam_id);
//                $preM->setNome($pre_nome);
                
                //sala
                $listSala = $objSala->selecionarSalaPorId($sal_id);
//                $salM->setId($sal_id);
//                $salM->setPredio($pre_id);
//                $salM->setIdentificacao($sal_identificacao);
//                $salM->setAndar($sal_andar);
                
                //andamento
                $andM->setId($and_id);
                $andM->setDescricao($and_descricao);
                
                //funcionario
                $func = $objFunc->selecionarPorId($fun_id);
                
                //ocorrencia
                $ocoM->setId($id);
                $ocoM->setEspecialidade($espM);
                $ocoM->setTipoOcorrencia($tip_ocoM);
                $ocoM->setDataHora($oco_data_hora);
                $ocoM->setDataInicio($oco_dt_inicio);
                $ocoM->setDataHoraSolucao($oco_dt_hr_solucao);
                $ocoM->setFoto($oco_foto);
                $ocoM->setComentario($oco_comentario);
                $ocoM->setCampus($camM);
                $ocoM->setPredio($listPredio);
                $ocoM->setSala($listSala);
                $ocoM->setAndamento($andM);
                $ocoM->setFuncionario($func);
                $ocoM->setUrgencia($urgM);
                
                $lista[$i++] = $ocoM;
                
            }
            
        }
        $conn->close();
        return $lista;
    }
    
    function findByUrgenciaAndamentoCampus($urgencia,$andamento,$campus){
        
        $objConn = new Conexao();
        $conn = $objConn->conecta();
        $ocoM = new OcorrenciaModel();
        
        $lista = array();
        $i = 0;
        
        if ($stm = $conn->prepare($this->select_by_urgencia_and_andamento_campus)) {
            
            $stm->bind_param('iii', $urgencia,$andamento,$campus);
            
            $stm->execute();

            //atribui o resultado encontrado as variaveis
            $stm->bind_result($id, $esp_id, $tip_oco_id, $oco_data_hora, $oco_dt_inicio, $oco_dt_hr_solucao, $oco_foto, 
                    $oco_comentario,$cam_id, $pre_id, $sal_id, $and_id, $fun_id, $urg_id, $tip_oco_id1, 
                    $tip_oco_descricao, $urg_id1, $esp_id1, $urg_id2, $urg_nome, $urg_cor, $urg_tempo, $esp_id2, 
                    $esp_nome, $cam_id1, $log_id, $cam_nome, $cam_num, $log_id1, $log_cep, $log_endereco, 
                    $log_bairro, $log_cidade, $log_uf, $and_id1, $and_descricao);

            while ($stm->fetch()) {
                $ocoM = new OcorrenciaModel();
                $tip_ocoM = new TipoOcorrenciaModel();
                $urgM = new UrgenciaModel();
                $espM = new EspecialidadeModel();
                $camM = new CampusModel();
                $objPredio = new PredioController();
                $objSala = new SalaController();
                $andM = new AndamentoModel();
                $logM = new LogradouroModel();
                $objFunc = new FuncionarioController();
                
                
                //especialidade
                $espM->setId($esp_id);
                $espM->setNome($esp_nome);
                
                //tipo de ocorrencia
                //urgencia
                $urgM->setId($urg_id);
                $urgM->setNome($urg_nome);
                $urgM->setCor($urg_cor);
                $urgM->setTempo($urg_tempo);
                
                
                $tip_ocoM->setId($tip_oco_id);
                $tip_ocoM->setUrgencia($urgM);
                $tip_ocoM->setEspecialidade($espM);
                $tip_ocoM->setDescricao($tip_oco_descricao);
                
                //logradouro
                $logM->setId($log_id);
                $logM->setCep($log_cep);
                $logM->setEndereco($log_endereco);
                $logM->setBairro($log_bairro);
                $logM->setCidade($log_cidade);
                $logM->setUf($log_uf);
                
                //campus
                $camM->setId($cam_id);
                $camM->setLogradouro($logM);
                $camM->setNome($cam_nome);
                $camM->setNumero($cam_num);
                
                //predio
                $listPredio = $objPredio->selecionarPredioPorId($pre_id);
                
//                $preM->setId($pre_id);
//                $preM->setCampus($cam_id);
//                $preM->setNome($pre_nome);
                
                //sala
                $listSala = $objSala->selecionarSalaPorId($sal_id);
//                $salM->setId($sal_id);
//                $salM->setPredio($pre_id);
//                $salM->setIdentificacao($sal_identificacao);
//                $salM->setAndar($sal_andar);
                
                //andamento
                $andM->setId($and_id);
                $andM->setDescricao($and_descricao);
                
                //funcionario
                $func = $objFunc->selecionarPorId($fun_id);
                
                //ocorrencia
                $ocoM->setId($id);
                $ocoM->setEspecialidade($espM);
                $ocoM->setTipoOcorrencia($tip_ocoM);
                $ocoM->setDataHora($oco_data_hora);
                $ocoM->setDataInicio($oco_dt_inicio);
                $ocoM->setDataHoraSolucao($oco_dt_hr_solucao);
                $ocoM->setFoto($oco_foto);
                $ocoM->setComentario($oco_comentario);
                $ocoM->setCampus($camM);
                $ocoM->setPredio($listPredio);
                $ocoM->setSala($listSala);
                $ocoM->setAndamento($andM);
                $ocoM->setFuncionario($func);
                
                $lista[$i++] = $ocoM;
                
            }
            
            
        }
        $conn->close();
        return $lista;
    }
    
            
    function findOcorrenciaByFuncionario($urgencia,$funcionario, $andamento){
        
        $objConn = new Conexao();
        $conn = $objConn->conecta();
        $ocoM = new OcorrenciaModel();
        
        $lista = array();
        $i = 0;
        
        if ($stm = $conn->prepare($this->select_urgencia_by_funcionario)) {
            
            $stm->bind_param('iii',$andamento, $funcionario,$urgencia);
            
            $stm->execute();

            //atribui o resultado encontrado as variaveis
            $stm->bind_result($fun_id,$sal_id,$log_id,$niv_id,$fun_nome,$fun_nasc,$fun_apelido,$fun_num,$fun_foto,
                    $fun_usu,$fun_senha,$fun_ativo,$oco_id,$fun_id1,$equipe_ativo,$oco_id1,$esp_id,$tip_oco_id,$oco_data_hora,$oco_dt_inicio,
                    $oco_dt_hr_solucao,$oco_foto,$oco_comentario,$cam_id,$pre_id,$sal_id1,$and_id,$fun_id1,$urg_id);

            while ($stm->fetch()) {
                $ocoM = new OcorrenciaModel();
                
                $objEspecialidade = new EspecialidadeController();
                $especialidade = $objEspecialidade->selecionarPorId($esp_id);
                
                $objTipoOcorrencia = new TipoOcorrenciaController();
                $tipo_oco = $objTipoOcorrencia->selecionarPorId($tip_oco_id);
                
                $objCampus = new CampusController();
                $campus = $objCampus->selecionarCampusPorId($cam_id);
                
                $objPredio = new PredioController();
                $predio = $objPredio->selecionarPredioPorId($pre_id);
                
                $objSala = new SalaController();
                $sala = $objSala->selecionarSalaPorId($sal_id);
                
                $objAndamento = new AndamentoController();
                $andamento = $objAndamento->selecionarPorId($and_id);
                
                $objFunc = new FuncionarioController();
                $funcionario = $objFunc->selecionarPorId($fun_id);
                
                $objUrgencia = new UrgenciaController();
                $urgencia = $objUrgencia->selecionarPorId($urg_id);
                
                //ocorrencia
                $ocoM->setId($oco_id);
                $ocoM->setEspecialidade($especialidade);
                $ocoM->setTipoOcorrencia($tipo_oco);
                $ocoM->setDataHora($oco_data_hora);
                $ocoM->setDataInicio($oco_dt_inicio);
                $ocoM->setDataHoraSolucao($oco_dt_hr_solucao);
                $ocoM->setFoto($oco_foto);
                $ocoM->setComentario($oco_comentario);
                $ocoM->setCampus($campus);
                $ocoM->setPredio($predio);
                $ocoM->setSala($sala);
                $ocoM->setAndamento($andamento);
                $ocoM->setFuncionario($funcionario);
                $ocoM->setUrgencia($urgencia);
                
                $lista[$i++] = $ocoM;
                
            }
            
            
        }
        $conn->close();
        return $lista;
    }
    
    function findById($id){
        
        $objConn = new Conexao();
        $conn = $objConn->conecta();
        $ocoM = new OcorrenciaModel();
        
        
        if ($stm = $conn->prepare($this->select_by_id)) {
            
            $stm->bind_param('i',$id);
            
            $stm->execute();

            //atribui o resultado encontrado as variaveis
            $stm->bind_result($oco_id,$esp_id,$tip_oco_id,$oco_data_hora,$oco_dt_inicio,
                    $oco_dt_hr_solucao,$oco_foto,$oco_comentario,$cam_id,$pre_id,$sal_id,$and_id,$fun_id,$urg_id);

            while ($stm->fetch()) {
                $ocoM = new OcorrenciaModel();
                
                $objEspecialidade = new EspecialidadeController();
                $especialidade = $objEspecialidade->selecionarPorId($esp_id);
                
                $objTipoOcorrencia = new TipoOcorrenciaController();
                $tipo_oco = $objTipoOcorrencia->selecionarPorId($tip_oco_id);
                
                $objCampus = new CampusController();
                $campus = $objCampus->selecionarCampusPorId($cam_id);
                
                $objPredio = new PredioController();
                $predio = $objPredio->selecionarPredioPorId($pre_id);
                
                $objSala = new SalaController();
                $sala = $objSala->selecionarSalaPorId($sal_id);
                
                $objAndamento = new AndamentoController();
                $andamento = $objAndamento->selecionarPorId($and_id);
                
                $objFunc = new FuncionarioController();
                $funcionario = $objFunc->selecionarPorId($fun_id);
                
                $objUrgencia = new UrgenciaController();
                $urgencia = $objUrgencia->selecionarPorId($urg_id);
                
                //ocorrencia
                $ocoM->setId($oco_id);
                $ocoM->setEspecialidade($especialidade);
                $ocoM->setTipoOcorrencia($tipo_oco);
                $ocoM->setDataHora($oco_data_hora);
                $ocoM->setDataInicio($oco_dt_inicio);
                $ocoM->setDataHoraSolucao($oco_dt_hr_solucao);
                $ocoM->setFoto($oco_foto);
                $ocoM->setComentario($oco_comentario);
                $ocoM->setCampus($campus);
                $ocoM->setPredio($predio);
                $ocoM->setSala($sala);
                $ocoM->setAndamento($andamento);
                $ocoM->setFuncionario($funcionario);
                $ocoM->setUrgencia($urgencia);
                
                $conn->close();
                return $ocoM;
                
            }
            
            
        }
        $conn->close();
        return $ocoM;
    }
    
    function findEquipe($ocorrencia){
        $objConn = new Conexao();
        $conn = $objConn->conecta();
        $equM= new EquipeModel();
        
        $lista = array();
        $i = 0;
        
        if ($stm = $conn->prepare($this->select_equipe)) {
            
            $stm->bind_param('i', $ocorrencia);
            
            $stm->execute();
            
            $stm->bind_result($oco, $fun);
            
            while($stm->fetch()){
                
                $objFunc = new FuncionarioController();
                
                $func = $objFunc->selecionarPorId($fun);
                
                $equM= new EquipeModel();
                $equM->setOcorrencia($oco);
                $equM->setFuncionario($func);
                        
                $lista[$i++] = $equM;  
            }
        }
        
        $conn->close();
        return $lista;
    }
    
    function filter($query, $pesquisas){
        
        $objConn = new Conexao();
        $conn = $objConn->conecta();
        $ocoM = new OcorrenciaModel();
        
        $lista = array();
        $i = 0;
        
        if ($stm = $conn->prepare($query)) {
            
            
            if(count($pesquisas) == 1 ){
                $stm->bind_param("i", $pesquisas[0]);
            }elseif(count($pesquisas) == 2 ){
                $stm->bind_param("ii", $pesquisas[0],$pesquisas[1]);
            }elseif(count($pesquisas) == 3 ){
                $stm->bind_param("iii", $pesquisas[0],$pesquisas[1],$pesquisas[2]);
            }elseif(count($pesquisas) == 4 ){
                $stm->bind_param("iiii", $pesquisas[0],$pesquisas[1],$pesquisas[2],$pesquisas[3]);
            }elseif(count($pesquisas) == 5 ){
                $stm->bind_param("iiiii", $pesquisas[0],$pesquisas[1],$pesquisas[2],$pesquisas[3],$pesquisas[4]);
            }
            
            $stm->execute();

            //atribui o resultado encontrado as variaveis
            $stm->bind_result($id, $esp_id, $tip_oco_id, $oco_data_hora, $oco_dt_inicio, $oco_dt_hr_solucao, $oco_foto, 
                    $oco_comentario,$cam_id, $pre_id, $sal_id, $and_id, $fun_id, $urg_id, $tip_oco_id1, 
                    $tip_oco_descricao, $urg_id1, $esp_id1, $urg_id2, $urg_nome, $urg_cor, $urg_tempo, $esp_id2, 
                    $esp_nome, $cam_id1, $log_id, $cam_nome, $cam_num, $log_id1, $log_cep, $log_endereco, 
                    $log_bairro, $log_cidade, $log_uf, $and_id1, $and_descricao);

            while ($stm->fetch()) {
                $ocoM = new OcorrenciaModel();
                $tip_ocoM = new TipoOcorrenciaModel();
                $urgM = new UrgenciaModel();
                $espM = new EspecialidadeModel();
                $camM = new CampusModel();
                $objPredio = new PredioController();
                $objSala = new SalaController();
                $andM = new AndamentoModel();
                $logM = new LogradouroModel();
                $objFunc = new FuncionarioController();
                
                
                //especialidade
                $espM->setId($esp_id);
                $espM->setNome($esp_nome);
                
                //tipo de ocorrencia
                
                //urgencia
                $urgM->setId($urg_id);
                $urgM->setNome($urg_nome);
                $urgM->setCor($urg_cor);
                $urgM->setTempo($urg_tempo);
                
                
                $tip_ocoM->setId($tip_oco_id);
                $tip_ocoM->setUrgencia($urgM);
                $tip_ocoM->setEspecialidade($espM);
                $tip_ocoM->setDescricao($tip_oco_descricao);
                
                //logradouro
                $logM->setId($log_id);
                $logM->setCep($log_cep);
                $logM->setEndereco($log_endereco);
                $logM->setBairro($log_bairro);
                $logM->setCidade($log_cidade);
                $logM->setUf($log_uf);
                
                //campus
                $camM->setId($cam_id);
                $camM->setLogradouro($logM);
                $camM->setNome($cam_nome);
                $camM->setNumero($cam_num);
                
                //predio
                $listPredio = $objPredio->selecionarPredioPorId($pre_id);
                
//                $preM->setId($pre_id);
//                $preM->setCampus($cam_id);
//                $preM->setNome($pre_nome);
                
                //sala
                $listSala = $objSala->selecionarSalaPorId($sal_id);
//                $salM->setId($sal_id);
//                $salM->setPredio($pre_id);
//                $salM->setIdentificacao($sal_identificacao);
//                $salM->setAndar($sal_andar);
                
                //andamento
                $andM->setId($and_id);
                $andM->setDescricao($and_descricao);
                
                //funcionario
                $func = $objFunc->selecionarPorId($fun_id);
                
                //ocorrencia
                $ocoM->setId($id);
                $ocoM->setEspecialidade($espM);
                $ocoM->setTipoOcorrencia($tip_ocoM);
                $ocoM->setDataHora($oco_data_hora);
                $ocoM->setDataInicio($oco_dt_inicio);
                $ocoM->setDataHoraSolucao($oco_dt_hr_solucao);
                $ocoM->setFoto($oco_foto);
                $ocoM->setComentario($oco_comentario);
                $ocoM->setCampus($camM);
                $ocoM->setPredio($listPredio);
                $ocoM->setSala($listSala);
                $ocoM->setAndamento($andM);
                $ocoM->setFuncionario($func);
                $ocoM->setUrgencia($urg_id);
                
                $lista[$i++] = $ocoM;
                
            }
            
            
        }
        $conn->close();
        return $lista;
    }
}

